/*
 * Ejercicio realizado por Francisco Gonzalez-Armijo Riádigos
 * para la prueba de seleccion de http://www.nomasystems.es
 */

package es.kuassivi.android.cd.business;

import java.io.IOException;

import org.json.JSONException;

import android.app.Activity;
import es.kuassivi.android.cd.api.AbstractRESTConfig;
import es.kuassivi.android.cd.api.AbstractRESTCallback;
import es.kuassivi.android.cd.api.RESTGetResponse;
import es.kuassivi.android.cd.settings.Settings;

/**
 * Model CustomCompanyREST
 * Es un modelo REST que realiza las peticiones al servidor REST
 * 
 * @author kuassivi <a href="mailto:kuassivi@gmail.com">kuassivi@gmail.com</a>
 * @since 0.1
 * 
 * @see RESTGetResponse
 */
public class CustomCompanyREST extends AbstractRESTConfig
{
	
	public static final String TAG = "CustomCompanyREST";
	
	/**
	 * @var String
	 */
	protected String SERVICE_URL;
	
	/**
	 * @var Settings
	 */
	private Settings settings;
	
	/**
	 * @var Activity
	 */
	private Activity context;
	
	/**
	 * Inicia el modelo REST, cargando las configuraciones para la conexion
	 * con el servidor REST
	 * 
	 * @param context Context
	 */
	public CustomCompanyREST(Activity context) 
	{
		super();
		
		this.context = context;
		
		this.settings = new Settings(context);
		
		loadSettings();
	}
	
	/**
	 * Carga el listado de las compañias
	 */
	public void loadCompanies() 
	{
		new RESTGetResponse(SERVICE_URL, new AbstractRESTCallback() 
		{
			@Override
			public void onComplete(String result) 
								throws IllegalStateException, IOException, JSONException  
			{
				// creamos la vista mediante ViewsBusiness
				ViewsBusiness.populateCompanies(context, result);
			}
		}).execute();
	}
	
	/**
	 * Carga la informacion de una compañia
	 * 
	 * @param id int
	 */
	public void loadCompanyDetails(int id) 
	{
		// TODO: [loadCompanyDetails] Parsear la url con el id (URI.parse)
		new RESTGetResponse( (SERVICE_URL + "/" + id) , new AbstractRESTCallback() 
		{
			@Override
			public void onComplete(String result) 
								throws IllegalStateException, IOException, JSONException  
			{
				// creamos la vista mediante ViewsBusiness
				ViewsBusiness.populateCompanyDetails(context, result);
			}
		}).execute();
	}
	

	@Override
	protected void loadSettings()
	{
		this.SERVICE_URL = settings.getServiceURL();
	}

}
